﻿using System;

namespace Mono.Cecil
{
	// Token: 0x02000066 RID: 102
	public sealed class ExportedType : IMetadataTokenProvider
	{
		// Token: 0x17000073 RID: 115
		// (get) Token: 0x060003C7 RID: 967 RVA: 0x0001B3C0 File Offset: 0x000195C0
		// (set) Token: 0x060003C8 RID: 968 RVA: 0x000035DA File Offset: 0x000017DA
		public string Namespace
		{
			get
			{
				return this.@namespace;
			}
			set
			{
				this.@namespace = value;
			}
		}

		// Token: 0x17000074 RID: 116
		// (get) Token: 0x060003C9 RID: 969 RVA: 0x0001B3D8 File Offset: 0x000195D8
		// (set) Token: 0x060003CA RID: 970 RVA: 0x000035E4 File Offset: 0x000017E4
		public string Name
		{
			get
			{
				return this.name;
			}
			set
			{
				this.name = value;
			}
		}

		// Token: 0x17000075 RID: 117
		// (get) Token: 0x060003CB RID: 971 RVA: 0x0001B3F0 File Offset: 0x000195F0
		// (set) Token: 0x060003CC RID: 972 RVA: 0x000035EE File Offset: 0x000017EE
		public TypeAttributes Attributes
		{
			get
			{
				return (TypeAttributes)this.attributes;
			}
			set
			{
				this.attributes = (uint)value;
			}
		}

		// Token: 0x17000076 RID: 118
		// (get) Token: 0x060003CD RID: 973 RVA: 0x0001B408 File Offset: 0x00019608
		// (set) Token: 0x060003CE RID: 974 RVA: 0x0001B43C File Offset: 0x0001963C
		public IMetadataScope Scope
		{
			get
			{
				bool flag = this.declaring_type != null;
				IMetadataScope result;
				if (flag)
				{
					result = this.declaring_type.Scope;
				}
				else
				{
					result = this.scope;
				}
				return result;
			}
			set
			{
				bool flag = this.declaring_type != null;
				if (flag)
				{
					this.declaring_type.Scope = value;
				}
				else
				{
					this.scope = value;
				}
			}
		}

		// Token: 0x17000077 RID: 119
		// (get) Token: 0x060003CF RID: 975 RVA: 0x0001B470 File Offset: 0x00019670
		// (set) Token: 0x060003D0 RID: 976 RVA: 0x000035F8 File Offset: 0x000017F8
		public ExportedType DeclaringType
		{
			get
			{
				return this.declaring_type;
			}
			set
			{
				this.declaring_type = value;
			}
		}

		// Token: 0x17000078 RID: 120
		// (get) Token: 0x060003D1 RID: 977 RVA: 0x0001B488 File Offset: 0x00019688
		// (set) Token: 0x060003D2 RID: 978 RVA: 0x00003602 File Offset: 0x00001802
		public MetadataToken MetadataToken
		{
			get
			{
				return this.token;
			}
			set
			{
				this.token = value;
			}
		}

		// Token: 0x17000079 RID: 121
		// (get) Token: 0x060003D3 RID: 979 RVA: 0x0001B4A0 File Offset: 0x000196A0
		// (set) Token: 0x060003D4 RID: 980 RVA: 0x0000360C File Offset: 0x0000180C
		public int Identifier
		{
			get
			{
				return this.identifier;
			}
			set
			{
				this.identifier = value;
			}
		}

		// Token: 0x1700007A RID: 122
		// (get) Token: 0x060003D5 RID: 981 RVA: 0x0001B4B8 File Offset: 0x000196B8
		// (set) Token: 0x060003D6 RID: 982 RVA: 0x00003616 File Offset: 0x00001816
		public bool IsNotPublic
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 0U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 0U, value);
			}
		}

		// Token: 0x1700007B RID: 123
		// (get) Token: 0x060003D7 RID: 983 RVA: 0x0001B4D8 File Offset: 0x000196D8
		// (set) Token: 0x060003D8 RID: 984 RVA: 0x0000362D File Offset: 0x0000182D
		public bool IsPublic
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 1U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 1U, value);
			}
		}

		// Token: 0x1700007C RID: 124
		// (get) Token: 0x060003D9 RID: 985 RVA: 0x0001B4F8 File Offset: 0x000196F8
		// (set) Token: 0x060003DA RID: 986 RVA: 0x00003644 File Offset: 0x00001844
		public bool IsNestedPublic
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 2U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 2U, value);
			}
		}

		// Token: 0x1700007D RID: 125
		// (get) Token: 0x060003DB RID: 987 RVA: 0x0001B518 File Offset: 0x00019718
		// (set) Token: 0x060003DC RID: 988 RVA: 0x0000365B File Offset: 0x0000185B
		public bool IsNestedPrivate
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 3U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 3U, value);
			}
		}

		// Token: 0x1700007E RID: 126
		// (get) Token: 0x060003DD RID: 989 RVA: 0x0001B538 File Offset: 0x00019738
		// (set) Token: 0x060003DE RID: 990 RVA: 0x00003672 File Offset: 0x00001872
		public bool IsNestedFamily
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 4U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 4U, value);
			}
		}

		// Token: 0x1700007F RID: 127
		// (get) Token: 0x060003DF RID: 991 RVA: 0x0001B558 File Offset: 0x00019758
		// (set) Token: 0x060003E0 RID: 992 RVA: 0x00003689 File Offset: 0x00001889
		public bool IsNestedAssembly
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 5U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 5U, value);
			}
		}

		// Token: 0x17000080 RID: 128
		// (get) Token: 0x060003E1 RID: 993 RVA: 0x0001B578 File Offset: 0x00019778
		// (set) Token: 0x060003E2 RID: 994 RVA: 0x000036A0 File Offset: 0x000018A0
		public bool IsNestedFamilyAndAssembly
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 6U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 6U, value);
			}
		}

		// Token: 0x17000081 RID: 129
		// (get) Token: 0x060003E3 RID: 995 RVA: 0x0001B598 File Offset: 0x00019798
		// (set) Token: 0x060003E4 RID: 996 RVA: 0x000036B7 File Offset: 0x000018B7
		public bool IsNestedFamilyOrAssembly
		{
			get
			{
				return this.attributes.GetMaskedAttributes(7U, 7U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(7U, 7U, value);
			}
		}

		// Token: 0x17000082 RID: 130
		// (get) Token: 0x060003E5 RID: 997 RVA: 0x0001B5B8 File Offset: 0x000197B8
		// (set) Token: 0x060003E6 RID: 998 RVA: 0x000036CE File Offset: 0x000018CE
		public bool IsAutoLayout
		{
			get
			{
				return this.attributes.GetMaskedAttributes(24U, 0U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(24U, 0U, value);
			}
		}

		// Token: 0x17000083 RID: 131
		// (get) Token: 0x060003E7 RID: 999 RVA: 0x0001B5D8 File Offset: 0x000197D8
		// (set) Token: 0x060003E8 RID: 1000 RVA: 0x000036E6 File Offset: 0x000018E6
		public bool IsSequentialLayout
		{
			get
			{
				return this.attributes.GetMaskedAttributes(24U, 8U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(24U, 8U, value);
			}
		}

		// Token: 0x17000084 RID: 132
		// (get) Token: 0x060003E9 RID: 1001 RVA: 0x0001B5F8 File Offset: 0x000197F8
		// (set) Token: 0x060003EA RID: 1002 RVA: 0x000036FE File Offset: 0x000018FE
		public bool IsExplicitLayout
		{
			get
			{
				return this.attributes.GetMaskedAttributes(24U, 16U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(24U, 16U, value);
			}
		}

		// Token: 0x17000085 RID: 133
		// (get) Token: 0x060003EB RID: 1003 RVA: 0x0001B61C File Offset: 0x0001981C
		// (set) Token: 0x060003EC RID: 1004 RVA: 0x00003717 File Offset: 0x00001917
		public bool IsClass
		{
			get
			{
				return this.attributes.GetMaskedAttributes(32U, 0U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(32U, 0U, value);
			}
		}

		// Token: 0x17000086 RID: 134
		// (get) Token: 0x060003ED RID: 1005 RVA: 0x0001B63C File Offset: 0x0001983C
		// (set) Token: 0x060003EE RID: 1006 RVA: 0x0000372F File Offset: 0x0000192F
		public bool IsInterface
		{
			get
			{
				return this.attributes.GetMaskedAttributes(32U, 32U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(32U, 32U, value);
			}
		}

		// Token: 0x17000087 RID: 135
		// (get) Token: 0x060003EF RID: 1007 RVA: 0x0001B660 File Offset: 0x00019860
		// (set) Token: 0x060003F0 RID: 1008 RVA: 0x00003748 File Offset: 0x00001948
		public bool IsAbstract
		{
			get
			{
				return this.attributes.GetAttributes(128U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(128U, value);
			}
		}

		// Token: 0x17000088 RID: 136
		// (get) Token: 0x060003F1 RID: 1009 RVA: 0x0001B684 File Offset: 0x00019884
		// (set) Token: 0x060003F2 RID: 1010 RVA: 0x00003762 File Offset: 0x00001962
		public bool IsSealed
		{
			get
			{
				return this.attributes.GetAttributes(256U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(256U, value);
			}
		}

		// Token: 0x17000089 RID: 137
		// (get) Token: 0x060003F3 RID: 1011 RVA: 0x0001B6A8 File Offset: 0x000198A8
		// (set) Token: 0x060003F4 RID: 1012 RVA: 0x0000377C File Offset: 0x0000197C
		public bool IsSpecialName
		{
			get
			{
				return this.attributes.GetAttributes(1024U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(1024U, value);
			}
		}

		// Token: 0x1700008A RID: 138
		// (get) Token: 0x060003F5 RID: 1013 RVA: 0x0001B6CC File Offset: 0x000198CC
		// (set) Token: 0x060003F6 RID: 1014 RVA: 0x00003796 File Offset: 0x00001996
		public bool IsImport
		{
			get
			{
				return this.attributes.GetAttributes(4096U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(4096U, value);
			}
		}

		// Token: 0x1700008B RID: 139
		// (get) Token: 0x060003F7 RID: 1015 RVA: 0x0001B6F0 File Offset: 0x000198F0
		// (set) Token: 0x060003F8 RID: 1016 RVA: 0x000037B0 File Offset: 0x000019B0
		public bool IsSerializable
		{
			get
			{
				return this.attributes.GetAttributes(8192U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(8192U, value);
			}
		}

		// Token: 0x1700008C RID: 140
		// (get) Token: 0x060003F9 RID: 1017 RVA: 0x0001B714 File Offset: 0x00019914
		// (set) Token: 0x060003FA RID: 1018 RVA: 0x000037CA File Offset: 0x000019CA
		public bool IsAnsiClass
		{
			get
			{
				return this.attributes.GetMaskedAttributes(196608U, 0U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(196608U, 0U, value);
			}
		}

		// Token: 0x1700008D RID: 141
		// (get) Token: 0x060003FB RID: 1019 RVA: 0x0001B738 File Offset: 0x00019938
		// (set) Token: 0x060003FC RID: 1020 RVA: 0x000037E5 File Offset: 0x000019E5
		public bool IsUnicodeClass
		{
			get
			{
				return this.attributes.GetMaskedAttributes(196608U, 65536U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(196608U, 65536U, value);
			}
		}

		// Token: 0x1700008E RID: 142
		// (get) Token: 0x060003FD RID: 1021 RVA: 0x0001B760 File Offset: 0x00019960
		// (set) Token: 0x060003FE RID: 1022 RVA: 0x00003804 File Offset: 0x00001A04
		public bool IsAutoClass
		{
			get
			{
				return this.attributes.GetMaskedAttributes(196608U, 131072U);
			}
			set
			{
				this.attributes = this.attributes.SetMaskedAttributes(196608U, 131072U, value);
			}
		}

		// Token: 0x1700008F RID: 143
		// (get) Token: 0x060003FF RID: 1023 RVA: 0x0001B788 File Offset: 0x00019988
		// (set) Token: 0x06000400 RID: 1024 RVA: 0x00003823 File Offset: 0x00001A23
		public bool IsBeforeFieldInit
		{
			get
			{
				return this.attributes.GetAttributes(1048576U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(1048576U, value);
			}
		}

		// Token: 0x17000090 RID: 144
		// (get) Token: 0x06000401 RID: 1025 RVA: 0x0001B7AC File Offset: 0x000199AC
		// (set) Token: 0x06000402 RID: 1026 RVA: 0x0000383D File Offset: 0x00001A3D
		public bool IsRuntimeSpecialName
		{
			get
			{
				return this.attributes.GetAttributes(2048U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(2048U, value);
			}
		}

		// Token: 0x17000091 RID: 145
		// (get) Token: 0x06000403 RID: 1027 RVA: 0x0001B7D0 File Offset: 0x000199D0
		// (set) Token: 0x06000404 RID: 1028 RVA: 0x00003857 File Offset: 0x00001A57
		public bool HasSecurity
		{
			get
			{
				return this.attributes.GetAttributes(262144U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(262144U, value);
			}
		}

		// Token: 0x17000092 RID: 146
		// (get) Token: 0x06000405 RID: 1029 RVA: 0x0001B7F4 File Offset: 0x000199F4
		// (set) Token: 0x06000406 RID: 1030 RVA: 0x00003871 File Offset: 0x00001A71
		public bool IsForwarder
		{
			get
			{
				return this.attributes.GetAttributes(2097152U);
			}
			set
			{
				this.attributes = this.attributes.SetAttributes(2097152U, value);
			}
		}

		// Token: 0x17000093 RID: 147
		// (get) Token: 0x06000407 RID: 1031 RVA: 0x0001B818 File Offset: 0x00019A18
		public string FullName
		{
			get
			{
				string text = string.IsNullOrEmpty(this.@namespace) ? this.name : (this.@namespace + "." + this.name);
				bool flag = this.declaring_type != null;
				string result;
				if (flag)
				{
					result = this.declaring_type.FullName + "/" + text;
				}
				else
				{
					result = text;
				}
				return result;
			}
		}

		// Token: 0x06000408 RID: 1032 RVA: 0x0000388B File Offset: 0x00001A8B
		public ExportedType(string @namespace, string name, ModuleDefinition module, IMetadataScope scope)
		{
			this.@namespace = @namespace;
			this.name = name;
			this.scope = scope;
			this.module = module;
		}

		// Token: 0x06000409 RID: 1033 RVA: 0x0001B880 File Offset: 0x00019A80
		public override string ToString()
		{
			return this.FullName;
		}

		// Token: 0x0600040A RID: 1034 RVA: 0x0001B898 File Offset: 0x00019A98
		public TypeDefinition Resolve()
		{
			return this.module.Resolve(this.CreateReference());
		}

		// Token: 0x0600040B RID: 1035 RVA: 0x0001B8BC File Offset: 0x00019ABC
		internal TypeReference CreateReference()
		{
			return new TypeReference(this.@namespace, this.name, this.module, this.scope)
			{
				DeclaringType = ((this.declaring_type != null) ? this.declaring_type.CreateReference() : null)
			};
		}

		// Token: 0x040000F7 RID: 247
		private string @namespace;

		// Token: 0x040000F8 RID: 248
		private string name;

		// Token: 0x040000F9 RID: 249
		private uint attributes;

		// Token: 0x040000FA RID: 250
		private IMetadataScope scope;

		// Token: 0x040000FB RID: 251
		private ModuleDefinition module;

		// Token: 0x040000FC RID: 252
		private int identifier;

		// Token: 0x040000FD RID: 253
		private ExportedType declaring_type;

		// Token: 0x040000FE RID: 254
		internal MetadataToken token;
	}
}
